package com.base.cn.platform.os.service.manage.user.count;

import com.base.cn.platform.os.service.FeignAuthConfig;
import com.base.cn.platform.os.service.manage.BaseService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * 用户统计接口
 *
 * @author s.li
 * @create 2018-08-24-9:41
 */
@FeignClient(name =  BaseService.appName,configuration = FeignAuthConfig.class)
public interface UserCountService extends BaseService {
    /**
     * 查询用户数量
     * @return
     */
    @RequestMapping(contextPath + "/user/findUserCount")
    Map<String,Integer> findUserCount();

    /**
     * 查询某一天平台用户24小时内每个小时的注册量
     * @param dateTime 查询的时间
     * @return UserRegDayNum
     */
    @RequestMapping(contextPath + "/user/queryUserRegDayTimeNum")
    List<Map<String,Integer>> queryUserRegDayTimeNum(@RequestParam("dateTime") String dateTime);

    /**
     * 查询用户注册地理布局
     * @return 用户注册布局列表
     */
    @RequestMapping(contextPath + "/user/queryUserRegLayoutNum")
    List<Map<String,Object>> queryUserRegLayoutNum();

    /**
     * 用户登录设备统计量
     * @return 统计对象
     */
    @RequestMapping(contextPath + "/user/queryUserLoginDeviceNum")
    Map<String,Object> queryUserLoginDeviceNum();

    /**
     * 查询活跃用户数量
     * @return 数量
     */
    @RequestMapping(contextPath + "/user/queryActiveUserNum")
    Integer queryActiveUserNum();

    /**
     * 查询注册对比数据统计数据
     * @return 统计数据对象
     */
    @RequestMapping(contextPath + "/user/queryRegFromUserNum")
    Map<String,Integer> queryRegFromUserNum();

    /**
     * 查询某一天平台用户24小时内每个小时的登录量
     * @param dateTime 时间
     * @return 统计数据列表
     */
    @RequestMapping(contextPath + "/user/queryUserLoginDayTimeNum")
    List<Map<String,Integer>> queryUserLoginDayTimeNum(@RequestParam("dateTime") String dateTime);


    /**
     * 查询某一时间段内平台用户每日的注册量
     * @param map
     * @return
     */
    @RequestMapping(contextPath + "/user/queryUserDayTimeNum")
    List<Map<String,Object>> queryUserDayTimeNum(@RequestBody Map<String, Object> map);


    /**
     * 网站访问量曲线
     * @return 统计数据列表
     */
    @RequestMapping(contextPath + "/user/queryUserLoginTimeNum")
    List<Map<String,Object>> queryUserLoginTimeNum(@RequestBody Map<String, Object> map);


    /**
     * 注册转化率
     * @return
     */
    @RequestMapping(contextPath + "/user/registerConversionRate")
    String findRegisterConversionRate(@RequestBody Map map);

    /**
     * 购买转化率
     * @return
     */
    @RequestMapping(contextPath + "/user/findOrderConversionRate")
    String findOrderConversionRate(@RequestBody Map map);
    /**
     * 日活跃DUA
     * @return
     */
    @RequestMapping(contextPath + "/user/findActiveDUA")
    String findActiveDUA(@RequestBody Map map);

    /**
     *  7日转化
     * @return
     */
    @RequestMapping(contextPath + "/user/findSevenDayConversion")
    String findSevenDayConversion();

    /**
     *  30日转化
     * @return
     */
    @RequestMapping(contextPath + "/user/findThirtyDayConversion")
    String findThirtyDayConversion();


}
